package com.atguigu.jxc.controller;

import com.atguigu.jxc.domain.ServiceVO;
import com.atguigu.jxc.entity.Goods;
import com.atguigu.jxc.service.InventoryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
import java.util.Map;
@RequestMapping("goods")
@RestController
public class InventoryController {

    @Autowired
    private InventoryService inventoryService;

    //查询商品库存
    @PostMapping("/listInventory")
    public Map<String, Object> listInventory(Integer page, Integer rows, String codeOrName, Integer goodsTypeId) {
        return inventoryService.selectInventoryPage(page,rows,codeOrName,goodsTypeId);

    }

   /* 无库存商品列表展示（可以根据商品名称或编码查询）
    请求URL：http://localhost:8080/goods/getNoInventoryQuantity
    请求参数：Integer page,Integer rows,String nameOrCode
    请求方式：POST
    返回值类型：JSON
    返回值：Map<String,Object>*/
   @PostMapping("/getNoInventoryQuantity")
    public Map<String,Object> getNoInventoryQuantity(Integer page,Integer rows,
                                                     String nameOrCode){
       return inventoryService.getNoInventoryQuantity(page,rows,nameOrCode);
   }

    /*有库存商品列表展示（可以根据商品名称或编码查询）
    请求URL：http://localhost:8080/goods/getHasInventoryQuantity
    请求参数：Integer page,Integer rows,String nameOrCode
    请求方式：POST
    返回值类型：JSON
    返回值：Map<String,Object>*/
    @PostMapping("/getHasInventoryQuantity")
    public Map<String,Object> getHasInventoryQuantity(Integer page,Integer rows,
                                                      String nameOrCode){
        return inventoryService.getHasInventoryQuantity(page,rows,nameOrCode);
    }

   /* 添加库存、修改数量或成本价
    请求URL：http://localhost:8080/goods/saveStock?goodsId=25
    请求参数：Integer goodsId,Integer inventoryQuantity,double purchasingPrice
    请求方式：POST
    返回值类型：JSON
    返回值：ServiceVO*/
    @PostMapping("/saveStock")
    public ServiceVO saveStock(Integer goodsId,Integer inventoryQuantity,double purchasingPrice){
        return inventoryService.saveStock(goodsId,inventoryQuantity,purchasingPrice);
    }

    /*删除库存（要判断商品状态 入库、有进货和销售单据的不能删除）
    请求URL：http://localhost:8080/goods/deleteStock
    请求参数：Integer goodsId
    请求方式：POST
    返回值类型：JSON
    返回值：ServiceVO */
    @PostMapping("deleteStock")
    public ServiceVO deleteStock(Integer goodsId){
        return inventoryService.deleteStock(goodsId);
    }

}
